#pragma once

#include <string>
#include "userAPI.h"
#include "mission.h"

class mission_event
{
public:
	mission_event(mission *m) : m_mission(m) {}

	mission* get_mission() { return m_mission; }

	virtual std::string get_type() = 0;

protected:
	mission *m_mission;
};

class basic_mission_event : public mission_event
{
public:
	basic_mission_event(mission *m) : mission_event(m) {}

	virtual std::string get_type() { return "basic_mission_event";}
};

class free_general_event : public mission_event
{
public:
	free_general_event(mission *m, AI9::GeneralType general) : mission_event(m) 
	{
		m_general = general;
	}

	virtual std::string get_type() { return "free_general_event";}

	AI9::GeneralType m_general;
};

class mission_completed_event : public mission_event
{
public:
	mission_completed_event(mission *m, bool actioned) : mission_event(m) 
	{
		actioned_state = actioned;
	}

	virtual std::string get_type() { return "mission_completed_event";}
	bool actioned_state;
};

